package com.code.platform.common.utils;


import java.math.BigDecimal;
import java.text.DecimalFormat;

/**
 * description
 *
 * @usage
 */
public class NumberUtils extends org.apache.commons.lang3.math.NumberUtils {
    private static final BigDecimal BIGDEC_ZERO = new BigDecimal(0);

    private static final BigDecimal BIGDEC_HUNDRED = new BigDecimal(100);

    /**
     * 相加
     *
     * @param number1
     * @param number2
     *
     * @return
     */
    public static String add(String number1, String number2) {
        BigDecimal bd = new BigDecimal(number1);
        return bd.add(new BigDecimal(number2)).toString();
    }

    /**
     * 乘以100
     * @param num
     * @return
     */
    public static BigDecimal multiplyHundred(BigDecimal num) {
        if (num == null) {
            return null;
        }
        return num.multiply(BIGDEC_HUNDRED);
    }

    /**
     * 乘以
     * @param num1
     * @return
     */
    public static BigDecimal multiplyHundred(BigDecimal num1,BigDecimal num2) {
        if (num1 == null) {
            return null;
        }
        if (num2 == null) {
            return null;
        }
        return num2.multiply(num1);
    }

    /**
     * 除以100
     * @param num
     * @return
     */
    public static BigDecimal divideHundred(BigDecimal num) {
        if (num == null) {
            return null;
        }
        return num.divide(BIGDEC_HUNDRED);
    }

    /**金额为分的格式 */
    public static final String CURRENCY_FEN_REGEX = "\\-?[0-9]+";


    /**
     * 标题:    changeF2Y
     * 描述:    将分为单位的转换为元 （除100） 保留2位小数
     * 参数:    @param amount 以分为单位的金额
     * 返回类型: String<br/> 以元单位的金额
     * 异常:    金额格式不对
     * 创建者:  xu_qing
     * 修改者:
     * 修改日期    :
     * 修改备注    :
     */
    public static String changeF2Y(String amount) throws Exception{
        if(StringUtils.isBlank(amount)){
            return "";
        }
        if(!amount.matches(CURRENCY_FEN_REGEX)) {
            throw new Exception("金额格式有误");
        }
        DecimalFormat df =new DecimalFormat("#0.00");
        return df.format(divideHundred(new BigDecimal(amount)));
    }

    /**
     * 标题:    changeY2F
     * 描述:    将元为单位的转换为分 （乘100）
     * 参数:    @param amount 以元为单位的金额
     * 返回类型: String<br/>  以分为单位的金额
     * 创建者: xu_qing
     * 修改者:
     * 修改日期    :
     * 修改备注    :
     */
    public static String changeY2F(String amount) throws Exception{
        return String.valueOf(multiplyHundred(new BigDecimal(amount)).longValue());
    }

    /**
     * 使用java正则表达式去掉多余的.与0
     * @param s
     * @return
     */
    public static String subZeroAndDot(String s){
        if (StringUtils.isBlank(s)) {
            return s;
        }
        if(s.indexOf(".") > 0){
            s = s.replaceAll("0+?$", "");//去掉多余的0
            s = s.replaceAll("[.]$", "");//如最后一位是.则去掉
        }
        return s;
    }

    public static void main(String[] args) throws Exception{


        System.out.println(subZeroAndDot("123.00"));
    }


}
